package com.aspose.cells;

import java.util.ArrayList;

class zabg {
   boolean a = true;
   private WorksheetCollection b;
   private int c = 1;
   private ArrayList d;
   private String e;
   private static final com.aspose.cells.b.c.a.za f = new com.aspose.cells.b.c.a.za(new String[]{"+", "-", "*", "/", "^", "&", "<", "=", "<=", ">", ">=", "<>", "CEILING", "FLOOR", "MOD", "ROUND", "TEXT", "()", "%", "ABS", "COLUMNS", "DAY", "EXP", "HOUR", "INT", "ISBLANK", "ISNUMBER", "LEN", "MINUTE", "MONTH", "NOT", "ROWS", "SECOND", "VALUE", "YEAR", "AND", "COUNT", "COUNTA", "MAX", "MEDIAN", "MIN", "OR", "STDEV", "STDEVP", "SUM", "AVERAGE", "CONCATENATE", "COLUMN", "ROW", "DATE", "DAVERAGE", "DCOUNT", "DCOUNTA", "DGET", "DMAX", "DMIN", "DPRODUCT", "DSTDEV", "DSTDEVP", "DSUM", "DVAR", "DVARP", "MID", "TIME", "FALSE", "NOW", "TODAY", "TRUE", "FV", "PMT", "PV", "OFFSET", "HLOOKUP", "VLOOKUP", "IF", "LOOKUP", "SUMIF", "NPV", "SUBTOTAL", "REPLACE", "WEEKDAY"});

   zabg(WorksheetCollection var1) {
      this.b = var1;
   }

   private void a(zabg var1) {
      if (this.d == null) {
         this.d = new ArrayList();
      }

      com.aspose.cells.b.a.a.ze.a(this.d, (Object)var1);
   }

   void a(String var1) {
      if (this.a) {
         int var6;
         if (this.c == 3) {
            if (var1 != null && !"".equals(var1)) {
               String[] var10 = this.b(var1);

               for(var6 = 0; var6 < var10.length; ++var6) {
                  zabg var13;
                  if (var10[var6].indexOf(34) == -1) {
                     var13 = new zabg(this.b);
                     this.a(var13);
                     var13.a(var10[var6]);
                  } else if (var10[var6].indexOf(34) != var10[var6].lastIndexOf(34)) {
                     var13 = new zabg(this.b);
                     this.a(var13);
                     var13.a(var10[var6]);
                  } else {
                     String var7 = var10[var6] + ',';
                     if (var6 > var10.length - 2) {
                        this.a = false;
                        return;
                     }

                     boolean var8 = false;

                     for(int var9 = var6 + 1; var9 < var10.length; ++var9) {
                        var7 = var7 + var10[var9];
                        if (var10[var9].indexOf(34) != -1) {
                           var8 = true;
                           var6 = var9;
                           break;
                        }

                        var7 = var7 + ',';
                     }

                     if (!var8) {
                        this.a = false;
                        return;
                     }

                     zabg var14 = new zabg(this.b);
                     this.a(var14);
                     var14.a(var7);
                  }
               }

            }
         } else if (var1 != null && !"".equals(var1)) {
            if (var1.charAt(0) == '"' && var1.charAt(var1.length() - 1) == '"') {
               this.e = var1;
            } else {
               int var2 = var1.indexOf(40);
               int var4;
               if (var2 == -1) {
                  if (!this.a) {
                     return;
                  }

                  var4 = this.a(var1, 0, var1.length());
                  if (var4 == -1) {
                     if (!this.a) {
                        return;
                     }

                     if (var1.charAt(var1.length() - 1) == '%') {
                        this.a(var1, var1.length() - 1);
                     } else {
                        this.e = var1.toUpperCase();
                     }
                  } else {
                     this.a(var1, var4);
                  }
               } else {
                  int var3 = -1;
                  int var5 = 0;

                  for(var6 = var2 + 1; var6 < var1.length(); ++var6) {
                     if (var1.charAt(var6) == '(') {
                        ++var5;
                     }

                     if (var1.charAt(var6) == ')') {
                        if (var5 == 0) {
                           var3 = var6;
                           break;
                        }

                        --var5;
                     }
                  }

                  if (var5 != 0) {
                     this.a = false;
                     return;
                  }

                  if (var2 == 0) {
                     if (var3 == var1.length() - 1) {
                        var1 = var1.substring(1, 1 + (var1.length() - 2));
                        this.e = "()";
                        this.c = 2;
                        zabg var11 = new zabg(this.b);
                        this.a(var11);
                        var11.a(var1);
                     } else {
                        var4 = this.a(var1, var3 + 1, var1.length());
                        if (var4 == -1) {
                           this.a = false;
                           return;
                        }

                        this.a(var1, var4);
                     }
                  } else {
                     String var12 = var1.substring(0, 0 + var2);
                     if (com.aspose.cells.b.a.zv.a(var12, "+-*/^<>".toCharArray()) != -1) {
                        var4 = this.a(var1, 0, var2);
                     } else {
                        var4 = -1;
                     }

                     if (var4 == -1) {
                        if (var3 == var1.length() - 1) {
                           this.e = var12.toUpperCase();
                           this.c = 3;
                           this.a(var1.substring(var2 + 1, var2 + 1 + (var3 - var2 - 1)));
                        } else {
                           if (var3 >= var1.length() - 2) {
                              this.a = false;
                              return;
                           }

                           var4 = this.a(var1, var3 + 1, var1.length());
                           if (var4 == -1) {
                              this.a = false;
                              return;
                           }

                           this.a(var1, var4);
                        }
                     } else {
                        this.a(var1, var4);
                     }
                  }
               }

            }
         } else {
            this.e = "";
         }
      }
   }

   private int a(String var1, int var2, int var3) {
      if (!this.a) {
         return -1;
      } else {
         for(int var4 = var2; var4 < var3; ++var4) {
            int var5;
            if (var1.charAt(var4) == '\'') {
               var5 = var1.indexOf(39, var4 + 1);
               if (var5 == -1) {
                  this.a = false;
                  return -1;
               }

               var4 = var5;
            } else {
               if (var1.charAt(var4) != '<' && var1.charAt(var4) != '>' && var1.charAt(var4) != '=' && var1.charAt(var4) != '&') {
                  if (var1.charAt(var4) == '+') {
                     if (var4 >= var1.length() - 1 || var1.charAt(var4 + 1) != '+' && var1.charAt(var4 + 1) != '-' && var1.charAt(var4 + 1) != '*' && var1.charAt(var4 + 1) != '/') {
                        if (var1.charAt(var4 + 1) == '(') {
                           return var4;
                        }

                        for(var5 = var3 - 1; var5 > var4 + 1; --var5) {
                           if (var1.charAt(var5) == '+' || var1.charAt(var5) == '-' || var1.charAt(var5) == '<') {
                              return var5;
                           }

                           if (var1.charAt(var5) == '=') {
                              if (var1.charAt(var5 - 1) != '<' && var1.charAt(var5 - 1) != '>') {
                                 return var5;
                              }

                              return var5 - 1;
                           }

                           if (var1.charAt(var5) == '>') {
                              if (var1.charAt(var5 - 1) == '<') {
                                 return var5 - 1;
                              }

                              return var5;
                           }
                        }

                        return var4;
                     }

                     this.a = false;
                     return -1;
                  }

                  if (var1.charAt(var4) == '-') {
                     if (var4 < var1.length() - 1 && (var1.charAt(var4 + 1) == '+' || var1.charAt(var4 + 1) == '-' || var1.charAt(var4 + 1) == '*' || var1.charAt(var4 + 1) == '/')) {
                        this.a = false;
                        return -1;
                     }

                     if (var1.charAt(var4 + 1) == '(') {
                        return var4;
                     }

                     for(var5 = var3 - 1; var5 > var4 + 1; --var5) {
                        if (var1.charAt(var5) == '+' || var1.charAt(var5) == '-' || var1.charAt(var5) == '<') {
                           return var5;
                        }

                        if (var1.charAt(var5) == '=') {
                           if (var1.charAt(var5 - 1) != '<' && var1.charAt(var5 - 1) != '>') {
                              return var5;
                           }

                           return var5 - 1;
                        }

                        if (var1.charAt(var5) == '>') {
                           if (var1.charAt(var5 - 1) == '<') {
                              return var5 - 1;
                           }

                           return var5;
                        }
                     }

                     return var4;
                  }

                  int var6;
                  if (var1.charAt(var4) != '*' && var1.charAt(var4) != '/') {
                     if (var1.charAt(var4) == '^') {
                        if (var4 >= var1.length() - 1 || var1.charAt(var4 + 1) != '+' && var1.charAt(var4 + 1) != '-' && var1.charAt(var4 + 1) != '*' && var1.charAt(var4 + 1) != '/') {
                           for(var5 = var4 + 2; var5 < var3; ++var5) {
                              if (var1.charAt(var5) == '+') {
                                 if (var5 + 1 < var3 && var1.charAt(var5 + 1) != '+' && var1.charAt(var5 + 1) != '-' && var1.charAt(var5 + 1) != '*' && var1.charAt(var5 + 1) != '/') {
                                    return var5;
                                 }

                                 this.a = false;
                                 return -1;
                              }

                              if (var1.charAt(var5) == '-') {
                                 if (var5 + 1 < var3 && var1.charAt(var5 + 1) != '+' && var1.charAt(var5 + 1) != '-' && var1.charAt(var5 + 1) != '*' && var1.charAt(var5 + 1) != '/') {
                                    for(var6 = var3 - 1; var6 > var5 + 1; --var6) {
                                       if (var1.charAt(var6) == '+' || var1.charAt(var6) == '-') {
                                          if (var6 + 1 < var3 && var1.charAt(var6 + 1) != '+' && var1.charAt(var6 + 1) != '-' && var1.charAt(var6 + 1) != '*' && var1.charAt(var6 + 1) != '/') {
                                             return var6;
                                          }

                                          this.a = false;
                                          return -1;
                                       }
                                    }

                                    return var5;
                                 }

                                 this.a = false;
                                 return -1;
                              }

                              if (var1.charAt(var5) == '*' || var1.charAt(var5) == '/') {
                                 if (var5 + 1 < var3 && var1.charAt(var5 + 1) != '+' && var1.charAt(var5 + 1) != '-' && var1.charAt(var5 + 1) != '*' && var1.charAt(var5 + 1) != '/') {
                                    for(var6 = var5 + 2; var6 < var3; ++var6) {
                                       if (var1.charAt(var6) == '+') {
                                          if (var6 + 1 < var3 && var1.charAt(var6 + 1) != '+' && var1.charAt(var6 + 1) != '-' && var1.charAt(var6 + 1) != '*' && var1.charAt(var6 + 1) != '/') {
                                             return var6;
                                          }

                                          this.a = false;
                                          return -1;
                                       }

                                       if (var1.charAt(var6) == '-') {
                                          if (var6 + 1 < var3 && var1.charAt(var6 + 1) != '+' && var1.charAt(var6 + 1) != '-' && var1.charAt(var6 + 1) != '*' && var1.charAt(var6 + 1) != '/') {
                                             for(int var7 = var3 - 1; var7 > var6 + 1; --var7) {
                                                if (var1.charAt(var7) == '+' || var1.charAt(var7) == '-') {
                                                   if (var7 + 1 < var3 && var1.charAt(var7 + 1) != '+' && var1.charAt(var7 + 1) != '-' && var1.charAt(var7 + 1) != '*' && var1.charAt(var7 + 1) != '/') {
                                                      return var7;
                                                   }

                                                   this.a = false;
                                                   return -1;
                                                }
                                             }

                                             return var6;
                                          }

                                          this.a = false;
                                          return -1;
                                       }
                                    }

                                    return var5;
                                 }

                                 this.a = false;
                                 return -1;
                              }
                           }

                           return var4;
                        }

                        this.a = false;
                        return -1;
                     }
                     continue;
                  }

                  if (var4 >= var1.length() - 1 || var1.charAt(var4 + 1) != '+' && var1.charAt(var4 + 1) != '-' && var1.charAt(var4 + 1) != '*' && var1.charAt(var4 + 1) != '/') {
                     for(var5 = var4 + 2; var5 < var3; ++var5) {
                        if (var1.charAt(var5) == '+') {
                           if (var5 + 1 < var3 && var1.charAt(var5 + 1) != '+' && var1.charAt(var5 + 1) != '-' && var1.charAt(var5 + 1) != '*' && var1.charAt(var5 + 1) != '/') {
                              return var5;
                           }

                           this.a = false;
                           return -1;
                        }

                        if (var1.charAt(var5) == '-') {
                           if (var5 + 1 < var3 && var1.charAt(var5 + 1) != '+' && var1.charAt(var5 + 1) != '-' && var1.charAt(var5 + 1) != '*' && var1.charAt(var5 + 1) != '/') {
                              for(var6 = var3 - 1; var6 > var5 + 1; --var6) {
                                 if (var1.charAt(var6) == '+' || var1.charAt(var6) == '-') {
                                    if (var6 + 1 < var3 && var1.charAt(var6 + 1) != '+' && var1.charAt(var6 + 1) != '-' && var1.charAt(var6 + 1) != '*' && var1.charAt(var6 + 1) != '/') {
                                       return var6;
                                    }

                                    this.a = false;
                                    return -1;
                                 }
                              }

                              return var5;
                           }

                           this.a = false;
                           return -1;
                        }
                     }

                     return var4;
                  }

                  this.a = false;
                  return -1;
               }

               return var4;
            }
         }

         return -1;
      }
   }

   private String[] b(String var1) {
      ArrayList var2 = new ArrayList();
      int var3 = 0;
      int var4 = 0;

      for(int var5 = 0; var5 < var1.length(); ++var5) {
         if (var1.charAt(var5) == ',') {
            if (var3 == 0) {
               com.aspose.cells.b.a.a.ze.a(var2, (Object)var1.substring(var4, var4 + (var5 - var4)));
               var4 = var5 + 1;
            }
         } else if (var1.charAt(var5) == '(') {
            ++var3;
         } else if (var1.charAt(var5) == ')') {
            --var3;
         }
      }

      com.aspose.cells.b.a.a.ze.a(var2, (Object)var1.substring(var4));
      String[] var7 = new String[var2.size()];

      for(int var6 = 0; var6 < var7.length; ++var6) {
         var7[var6] = ((String)var2.get(var6)).trim();
      }

      return var7;
   }

   private void a(String var1, int var2) {
      String var5;
      String var6;
      if (var1.charAt(var2) == '<') {
         if (var1.charAt(var2 + 1) != '>' && var1.charAt(var2 + 1) != '=') {
            this.e = Character.toString(var1.charAt(var2));
            this.c = 2;
            var5 = var1.substring(0, 0 + var2).trim();
            var6 = var1.substring(var2 + 1, var2 + 1 + (var1.length() - var2 - 1)).trim();
         } else {
            this.e = var1.substring(var2, var2 + 2);
            this.c = 2;
            var5 = var1.substring(0, 0 + var2).trim();
            var6 = var1.substring(var2 + 2, var2 + 2 + (var1.length() - var2 - 2)).trim();
         }
      } else if (var1.charAt(var2) == '>') {
         if (var1.charAt(var2 + 1) == '=') {
            this.e = var1.substring(var2, var2 + 2);
            this.c = 2;
            var5 = var1.substring(0, 0 + var2).trim();
            var6 = var1.substring(var2 + 2, var2 + 2 + (var1.length() - var2 - 2)).trim();
         } else {
            this.e = Character.toString(var1.charAt(var2));
            this.c = 2;
            var5 = var1.substring(0, 0 + var2).trim();
            var6 = var1.substring(var2 + 1, var2 + 1 + (var1.length() - var2 - 1)).trim();
         }
      } else {
         this.e = Character.toString(var1.charAt(var2));
         this.c = 2;
         var5 = var1.substring(0, 0 + var2).trim();
         var6 = var1.substring(var2 + 1, var2 + 1 + (var1.length() - var2 - 1)).trim();
      }

      if (var5 != null && !"".equals(var5)) {
         zabg var3 = new zabg(this.b);
         this.a(var3);
         var3.a(var5);
      }

      if (var6 != null && !"".equals(var6)) {
         zabg var4 = new zabg(this.b);
         this.a(var4);
         var4.a(var6);
      }

   }

   void a() {
      if (this.a) {
         if (this.d != null && this.d.size() != 0) {
            for(int var1 = 0; var1 < this.d.size(); ++var1) {
               zabg var2 = (zabg)this.d.get(var1);
               var2.a();
               if (!this.a) {
                  break;
               }
            }
         }

         if (this.a) {
            this.b();
         }
      }
   }

   private void b() {
      if (this.e != null && !"".equals(this.e)) {
         switch(f.a(this.e)) {
         case 0:
         case 1:
            if (this.d == null || this.d.size() == 0 || this.d.size() > 2) {
               this.a = false;
            }
            break;
         case 2:
         case 3:
         case 4:
         case 5:
         case 6:
         case 7:
         case 8:
         case 9:
         case 10:
         case 11:
         case 12:
         case 13:
         case 14:
         case 15:
         case 16:
            if (this.d == null || this.d.size() != 2) {
               this.a = false;
            }
         case 17:
         case 18:
            break;
         case 19:
         case 20:
         case 21:
         case 22:
         case 23:
         case 24:
         case 25:
         case 26:
         case 27:
         case 28:
         case 29:
         case 30:
         case 31:
         case 32:
         case 33:
         case 34:
            if (this.d == null || this.d.size() != 1) {
               this.a = false;
            }
            break;
         case 35:
         case 36:
         case 37:
         case 38:
         case 39:
         case 40:
         case 41:
         case 42:
         case 43:
         case 44:
            if (this.d == null || this.d.size() == 0 || this.d.size() > 30) {
               this.a = false;
            }
            break;
         case 45:
         case 46:
            if (this.d == null || this.d.size() == 0) {
               this.a = false;
            }
            break;
         case 47:
         case 48:
            if (this.d != null && this.d.size() > 1) {
               this.a = false;
            }
            break;
         case 49:
         case 50:
         case 51:
         case 52:
         case 53:
         case 54:
         case 55:
         case 56:
         case 57:
         case 58:
         case 59:
         case 60:
         case 61:
         case 62:
         case 63:
            if (this.d == null || this.d.size() != 3) {
               this.a = false;
            }
            break;
         case 64:
         case 65:
         case 66:
         case 67:
            if (this.d != null && this.d.size() != 0) {
               this.a = false;
            }
            break;
         case 68:
         case 69:
         case 70:
         case 71:
            if (this.d == null || this.d.size() < 3 || this.d.size() > 5) {
               this.a = false;
            }
            break;
         case 72:
         case 73:
            if (this.d == null || this.d.size() < 3 || this.d.size() > 4) {
               this.a = false;
            }
            break;
         case 74:
         case 75:
         case 76:
            if (this.d == null || this.d.size() != 2 && this.d.size() != 3) {
               this.a = false;
            }
            break;
         case 77:
         case 78:
            if (this.d == null || this.d.size() < 2 || this.d.size() > 30) {
               this.a = false;
            }
            break;
         case 79:
            if (this.d == null || this.d.size() != 4) {
               this.a = false;
            }
            break;
         case 80:
            if (this.d == null || this.d.size() != 1 && this.d.size() != 2) {
               this.a = false;
            }
            break;
         default:
            this.c();
         }

      }
   }

   private void c() {
      if (this.a) {
         if (this.e.charAt(0) != '"' || this.e.charAt(this.e.length() - 1) != '"') {
            boolean var1 = true;
            int var2 = 0;

            int var3;
            for(var3 = 0; var3 < this.e.length(); ++var3) {
               if (this.e.charAt(var3) < '0' || this.e.charAt(var3) > '9') {
                  if (this.e.charAt(var3) != '.') {
                     var1 = false;
                     break;
                  }

                  ++var2;
                  if (var2 > 1) {
                     this.a = false;
                     return;
                  }
               }
            }

            if (!var1) {
               var3 = this.e.indexOf(58);
               if (var3 != -1) {
                  this.d();
               } else {
                  this.c(this.e);
               }

            }
         }
      }
   }

   private void d() {
      if (this.a) {
         String[] var1 = com.aspose.cells.b.a.zv.d(this.e, ':');
         if (var1.length != 2) {
            this.a = false;
         } else {
            this.c(var1[0]);
            if (this.a) {
               this.c(var1[1]);
            }

         }
      }
   }

   private void c(String var1) {
      if (this.a) {
         String[] var2 = com.aspose.cells.b.a.zv.d(var1, '!');
         if (var2.length == 1) {
            this.d(var1);
         } else if (var2.length == 2) {
            boolean var3 = false;

            for(int var4 = 0; var4 < this.b.getCount(); ++var4) {
               if (com.aspose.cells.b.a.zv.b(var2[0], this.b.get(var4).getName().toUpperCase())) {
                  var3 = true;
                  break;
               }
            }

            if (var3) {
               this.d(var2[1]);
            } else {
               this.a = false;
            }
         } else {
            this.a = false;
         }

      }
   }

   private void d(String var1) {
      boolean var2 = true;
      int var3 = 0;

      for(int var4 = 0; var4 < var1.length(); ++var4) {
         if (var1.charAt(var4) < '0' || var1.charAt(var4) > '9') {
            if (var1.charAt(var4) != '.') {
               var2 = false;
               break;
            }

            ++var3;
            if (var3 > 1) {
               this.a = false;
               return;
            }
         }
      }

      if (!var2) {
         this.e(var1);
      }

   }

   private void e(String var1) {
      if (this.a) {
         if (var1.indexOf("$") != -1) {
            com.aspose.cells.b.a.g.a.zc var2 = com.aspose.cells.b.a.g.a.ze.a(var1, ".*\\$[^\\$]+\\$?[^\\$]+", 66);
            if (!var2.c()) {
               this.a = false;
               return;
            }

            var1 = com.aspose.cells.b.a.zv.a(var1, "$", (String)null);
         }

         if (!Character.isLetter(var1.charAt(0))) {
            this.a = false;
         } else if (var1.length() != 1 || !Character.isLetter(var1.charAt(0))) {
            int var4;
            long var8;
            if (!com.aspose.cells.b.a.zm.a(var1, 1)) {
               if (com.aspose.cells.b.a.zm.b(var1, 1)) {
                  var8 = ((long)var1.charAt(0) & 4294967295L) - 65L;
                  if ((var8 & 4294967295L) > 255L) {
                     this.a = false;
                     return;
                  }

                  try {
                     var4 = com.aspose.cells.b.a.zo.a(var1.substring(1));
                     if (var4 < 1 || var4 > 65536) {
                        this.a = false;
                        return;
                     }
                  } catch (Exception var6) {
                     this.a = false;
                     return;
                  }
               } else {
                  this.a = false;
               }
            } else {
               if (var1.length() == 2) {
                  return;
               }

               for(int var7 = 2; var7 < var1.length(); ++var7) {
                  if (!com.aspose.cells.b.a.zm.b(var1, var7)) {
                     this.a = false;
                     return;
                  }
               }

               var8 = (((long)var1.charAt(0) & 4294967295L) - 64L) * 26L + ((long)var1.charAt(1) & 4294967295L) - 65L;
               if ((var8 & 4294967295L) == 0L || (var8 & 4294967295L) > 255L) {
                  this.a = false;
                  return;
               }

               try {
                  var4 = com.aspose.cells.b.a.zo.a(var1.substring(2));
                  if (var4 < 1 || var4 > 65536) {
                     this.a = false;
                     return;
                  }
               } catch (Exception var5) {
                  this.a = false;
                  return;
               }
            }

         }
      }
   }
}
